#include<iostream>
//浅拷贝问题：类中有指针成员变量，拷贝时只是进行了指针拷贝，导致两个指针指向同一块内存，发生两次释放
//   地址拷贝
//深拷贝：不是地址拷贝，是内存拷贝
class Test
{
    public:
        Test()
        {
            std::cout<<"构造函数!\n";
            a=new int ;
        }
        Test(const Test& t)
        {
            std::cout<<"深拷贝构造函数！\n";
            //a=t.a这就是把指针拷贝过来就是浅拷贝
            a=new int(*t.a);//创建一个空间把t.a指向的内存拷贝过来。
        }
        void operator=(const Test& t)
        {
            delete a;
            std::cout<<"赋值运算符重载深拷贝！\n";
            a=new int(*t.a);
        }
        ~Test()
        {
            std::cout<<"析构函数\n";
            delete a;
        }
    private:
            int *a;
};


int main()
{
    Test t;
    Test t2=t;
    return 0;
}